package com.zjj.algorithm.learning.dmsxl.hash;

/**
 * 242. 有效的字母异位词
 * 简单题
 * 给定两个字符串 s 和 t ，编写一个函数来判断 t 是否是 s 的字母异位词。
 * <p>
 * 注意：若 s 和 t 中每个字符出现的次数都相同，则称 s 和 t 互为字母异位词。
 * 示例 1:
 * <p>
 * 输入: s = "anagram", t = "nagaram"
 * 输出: true
 * 示例 2:
 * <p>
 * 输入: s = "rat", t = "car"
 * 输出: false
 * <p>
 * <p>
 * 提示:
 * <p>
 * 1 <= s.length, t.length <= 5 * 104
 * s 和 t 仅包含小写字母
 *
 * @author zjj_admin
 * @date 2022/12/22 13:51
 */
public class Hash_02_ValidAnagram {

    public static void main(String[] args) {
        String s = "anagram", t = "nagaram";
        boolean res = isAnagram(s, t);
        System.out.println("res = " + res);
    }


    /**
     * 使用hash表解决
     * 时间
     * 3 ms
     * 击败
     * 72.32%
     * 内存
     * 41.8 MB
     * 击败
     * 35.88%
     *
     * @param s
     * @param t
     * @return
     */
    public static boolean isAnagram(String s, String t) {
        int[] record = new int[26];
        for (int i = 0; i < s.length(); i++) {
            record[s.charAt(i) - 'a']++;
        }

        for (int i = 0; i < t.length(); i++) {
            record[t.charAt(i) - 'a']--;
        }

        for (int j : record) {
            if (j != 0) {
                return false;
            }
        }
        return true;
    }
}
